/***************************************************************************//**
 * @file camera_array_matching.h
 * @brief Header file for camera array matching
 *
 * @authors Brian Fehrman and Scott Logan
 * 
 * @date April 17 2013
 ******************************************************************************/

#ifndef _CAMERA_ARRAY_MATCHING_H_
#define _CAMERA_ARRAY_MATCHING_H_

#include <opencv2/core/core.hpp>
#include <opencv2/calib3d/calib3d.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/legacy/compat.hpp>
#include <opencv2/nonfree/features2d.hpp>
#include <sstream>
#include <iostream>
#include <vector>
#include <sys/stat.h>
#include <time.h>
#include <iomanip>


void camera_array_match( FileNode fs );
double compute_mean( Mat& image );
double compute_std_dev( Mat& image, double mean );
double normalized_correlation( Mat& img_1, Mat& img_2, double mean_1, double mean_2,
                                 double std_dev_1, double std_dev_2 );
void template_matching( Mat anchor_img, Mat comp_img, int template_size, Point search_region, Mat& matches, int flip_x, int flip_y );
void feature_matching( const Mat &anchor_img, const Mat &comp_img, const CvSURFParams &params, const double &flann_threshold, Mat& matches );

#endif
